/*****************************
 *@file: FrozenSkill
 *@author: 陈吕唐
 *@desc: 冰冻范围：创造出一块冰冻区域，使敌人每秒受到200%攻击力伤害，并每秒附加一层寒冷效果。寒冷:每层附带10%减速，持续6秒，叠加四层后清除减速效果并晕眩1秒。
 *@date: 2024-03-26	15:16
 *****************************/
import { _decorator, instantiate, math, Prefab, v3 } from 'cc';
import IBaseBulletValue from '../bullet/IBaseBulletValue';
import { FrozenSummon } from '../summon/FrozenSummon';
import { ActiveSkill } from './ActiveSkill';
const { ccclass, property } = _decorator;

@ccclass('FrozenSkill')
export class FrozenSkill extends ActiveSkill {
    /****************************************************************************************************************
     *Readonly 常量
     ****************************************************************************************************************/

    /****************************************************************************************************************
     *Property 定义变量
     ****************************************************************************************************************/

    /***************************************************************
     *PropertyUI 引用的控件
     ***************************************************************/
    @property({ group: { name: 'UI', id: '1' }, type: Prefab, tooltip: `英雄射击冰冻区域预制体` })
    private prefab: Prefab = undefined!;
    /****************************************************************************************************************
     * Lifecycle 生命周期相关方法
     ****************************************************************************************************************/

    /****************************************************************************************************************
     * Public 公有方法
     ****************************************************************************************************************/
    protected override release(): void {
        super.release();

        let position = this.character.node.getPosition();
        let v = v3(position.x + 500, position.y, position.z);
        this.frozen(v)
    }
    /****************************************************************************************************************
     * private 私有方法
     ****************************************************************************************************************/
    private frozen(position: math.Vec3) {
        /**
         * 伤害值
         */
        let o = this.character;
        let damage = o.normalDamage() * this.value;
        let value: IBaseBulletValue = { value: damage };

        let node = instantiate(this.prefab);
        node.setPosition(position);
        this.character.node.addChild(node);
        let comp = node.getComponent(FrozenSummon);
        comp.value = value;
    }
    /****************************************************************************************************************
     * Property Get && Set 属性的 get && set 函数
     ****************************************************************************************************************/

}

